/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.hl7.v3;

import java.util.List;

import org.eclipse.emf.common.util.Enumerator;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>ENXP</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 *             A character string token representing a part of a name.
 *             May have a type code signifying the role of the part in
 *             the whole entity name, and a qualifier code for more detail
 *             about the name part type. Typical name parts for person
 *             names are given names, and family names, titles, etc.
 *          
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.hl7.v3.ENXP#getPartType <em>Part Type</em>}</li>
 *   <li>{@link org.hl7.v3.ENXP#getQualifier <em>Qualifier</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.hl7.v3.V3Package#getENXP()
 * @model extendedMetaData="name='ENXP' kind='mixed'"
 * @generated
 */
public interface ENXP extends ST1 {
	/**
	 * Returns the value of the '<em><b>Part Type</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Indicates whether the name part is a given name, family
	 *                      name, prefix, suffix, etc.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Part Type</em>' attribute.
	 * @see #setPartType(Enumerator)
	 * @see org.hl7.v3.V3Package#getENXP_PartType()
	 * @model dataType="org.hl7.v3.EntityNamePartType"
	 *        extendedMetaData="kind='attribute' name='partType'"
	 * @generated
	 */
	Enumerator getPartType();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ENXP#getPartType <em>Part Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Part Type</em>' attribute.
	 * @see #getPartType()
	 * @generated
	 */
	void setPartType(Enumerator value);

	/**
	 * Returns the value of the '<em><b>Qualifier</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 *  is a set of codes each of which specifies
	 *                      a certain subcategory of the name part in addition to
	 *                      the main name part type. For example, a given name may
	 *                      be flagged as a nickname, a family name may be a
	 *                      pseudonym or a name of public records.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Qualifier</em>' attribute.
	 * @see #setQualifier(List)
	 * @see org.hl7.v3.V3Package#getENXP_Qualifier()
	 * @model dataType="org.hl7.v3.SetEntityNamePartQualifier" many="false"
	 *        extendedMetaData="kind='attribute' name='qualifier'"
	 * @generated
	 */
	List<Enumerator> getQualifier();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ENXP#getQualifier <em>Qualifier</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Qualifier</em>' attribute.
	 * @see #getQualifier()
	 * @generated
	 */
	void setQualifier(List<Enumerator> value);

} // ENXP
